02. 定义函数 I
圆柱体积函数
我们以前使用过几种 Python 内置函数。现在,我们可以尝试自己编写函数。
我们将编写一个计算圆柱体积的函数:圆柱的高乘以其半径的平方,再乘以 pi。
已标明圆柱的半径 (r) 和高 (h)。
图片改编自
Wikimedia Commons
下面是一个计算圆柱体积的函数定义:
def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2
在定义
cylinder_volume
函数后,可以按如下方法使用该函数:
>>> cylinder_volume(10, 3)
282.7431
现在我们来仔细分析一下这个函数的定义:
分析函数定义

函数定义的元素
函数头
-
(1)
def
关键字表示以下代码即函数定义。 -
(2)
def
后跟的是函数的名称,在这个例子中是cylinder_volume
。函数名称应该是一个单词,可使用下划线连接两个单词。 -
(3)
函数定义第一行的最后一个元素是函数所需的参数(函数名的命名规则与变量名相同)。函数的参数是调用函数时传入的值;在函数体中将使用这些参数。请用逗号隔开参数,并将它们放在一对括号中。如果编写一个不带参数的函数,应使用一对空括号
()
。函数定义的第一行以冒号:
结尾。
下面是一个不带参数的函数示例:
def print_greeting():
print('Hello World!')
该函数将打印出 "Hello World"。由于这个函数没有参数,因此我们使用一对空括号。
函数体
-
(4)
使用四个空格缩进函数体。函数体是函数发挥作用的载体。我们可以在函数体内引用参数变量,以及定义新的变量。在此定义的
pi
变量是一个局部变量,这意味着它只能在cylinder_volume
函数的函数体中使用。在其他地方尝试访问该变量会导致错误。 -
(5)
使用
return
关键字可获取函数结果。return
之后的表达式值是函数的输出值。 -
(6)
在这个示例中,我们返回一个表达式(即圆柱体积的公式)的值。请注意,该表达式先计算
radius ** 2
,这是因为在数学运算中,先计算乘方,再计算乘法。(有时为了避免混淆,在涉及大量运算的数学表达式中,你也可以添加括号,如height * pi * (radius ** 2)
。)如果你不想在设置返回值时使用表达式,也可以提前在函数体中计算体积,然后将其存储在名为volume
的变量中,这将使我们可以return volume
。
练习:人口密度函数
请编写一个名为
population_density
的函数,该函数有两个参数,
population
和
land_area
(以平方公里计),并返回一个根据这些值计算出的人口密度。下面的练习中有两个测试案例,你可以使用这两个案例验证自己的函数是否可用。编写函数后,请使用测试答案按钮测试代码。
Start Quiz:
# todo: define a function named `population_density` that takes two arguments,
# `population` and `land_area` (in square kilometres), and returns a population
# density calculated from those values.
# Your code goes here!
# Here are test cases to verify that your function works as expected:
test1 = population_density(10, 1)
expected_result1 = 10
print("expected result: {}, actual result: {}".format(expected_result1, test1))
test2 = population_density(864816, 121.4)
expected_result2 = 7123.6902801
print("expected result: {}..., actual result: {}".format(expected_result2, test2))